## Краш при использовании метода Слушать

Один из вариантов - не использовать данный метод, а использовать набор более практичных методов. См. [пример](./examples/modern_consumer.md).

К примеру, краш в некоторых случаях может возникать из-за некорретных заголовков или ключей сообщений. В этом случае, можно получать само сообщение, не получая проблемные ключи.

Метод Слушать - возвращает перекодированную строку в UTF-8. Это тоже место, которое может потенциально приводить к падению компоненты. Этот кейс решается использованием метода **ПолучитьДанныеСообщения(Истина)**. В этом случае, будут возвращены двоичные данные сообщения, которые можно прочитать через буффер двоичных данных.

## Отправка файлов > 1 mb

По умолчанию, в настройках топика указано ограничение на размер сообщения, которое может быть записано в топик. За это отвечает параметр **max.message.bytes** (разрешенный размер сообщения после сжатия). По умолчанию значение установлено в 1 mb (1048588 byte). Рекомендуется задать настройки для топика (или на уровне брокера) исходя из реального размера сообщений, которые должы храниться в топики, например 50 mb.

Такое же ограничение указано в библиотеке [**librdkafka**](https://github.com/confluentinc/librdkafka) в параметре **message.max.bytes**. 

Один из подходов отправить большое сообщение - сжать его средствами компоненты, например 

```1c
Компонента.УстановитьПараметр("compression.codec", "snappy");
```

Но библиотека проверяет размер сообщения до сжатия (параметр **message.max.bytes**), поэтому рекомендуется либо сразу задать более высокое ограничение размера, либо выставлять параметр **message.max.bytes** исходя из размера сообщения:

```1c
upsize = 1048576;               		
РазмерДанных = РазмерДанныхВБайтах(Сообщение);

Если РазмерДанных > 1000000 Тогда
	Компонента.УстановитьПараметр("message.max.bytes", Формат(РазмерДанных + upsize, "ЧДЦ=0; ЧГ=0; ЧФ=Ч"));		
КонецЕсли;
```

Если необходимо производить отправку больших файлов - xml, pdf, png и.т.д. - рекомендуется заранее эти файлы загружать в хранилище типа S3, а в сообщении обмена передавать путь, где размещен в хранилище файл.


## SSL клиент

```1c
Компонента.УстановитьПараметр("group.id", "testGroup"); 
Компонента.УстановитьПараметр("enable.ssl.certificate.verification", "false");	// если используется самовыпущенный сертификат
Компонента.УстановитьПараметр("security.protocol", "sasl_ssl");
Компонента.УстановитьПараметр("ssl.ca.location", "ca.cer");
Компонента.УстановитьПараметр("ssl.key.location", "private.pem");
Компонента.УстановитьПараметр("ssl.key.password", "password");
Компонента.УстановитьПараметр("ssl.certificate.location", "/path/to/keystore/client.keystore.p12");
Компонента.УстановитьПараметр("sasl.mechanism", "PLAIN");
Компонента.УстановитьПараметр("sasl.username", "user");
Компонента.УстановитьПараметр("sasl.password", "password");
```



